//package com.cande.loki.jmh.jgroups;
//
//import org.HdrHistogram.Histogram;
//import org.jgroups.JChannel;
//import org.jgroups.Message;
//import org.jgroups.Receiver;
//import org.jgroups.View;
//
//import java.io.FileOutputStream;
//import java.io.PrintStream;
//import java.util.List;
//import java.util.concurrent.CopyOnWriteArrayList;
//
//import static java.lang.System.nanoTime;
//
//public class JGroupsBenchMark implements Receiver{
//    List<Long> list = new CopyOnWriteArrayList<>();
//    protected JChannel ch;
//    protected String name;
//
//    protected void start(String name) throws Exception {
//        this.name = name;
//        ch=new JChannel("D:\\code\\loki\\src\\main\\resources\\testudp.xml").name(name)
//                .setReceiver(this)
//                .connect("demo-cluster");
//
//        int count = 1000;
//
//        for (int i = 0; i < count; i++) {
//
//            long start = nanoTime();
//            ch.send(null,  start);
////
//        }
//
//        while(true){
//            if (list.size() == count){
//            printHdr(list);
//            System.out.println("end");
//            break;
//            }
//        }
//    }
//
//
//
//
//        public void receive(Message msg) {
//            long end = nanoTime();
//            Long start = Long.valueOf(msg.getObject().toString());
//
//            Long diff = end- start;
//            list.add(diff);
//            System.out.printf("-- [%s] msg from %s: %s\n", name, msg.src(), diff);
//        }
//
//        public void viewAccepted(View v) {
//            System.out.printf("-- [%s] new view: %s\n", name, v);
//        }
//
//    public static void main(String[] args) throws Exception {
//        new JGroupsBenchMark().start(args[0]);
//    }
//
//
//
//    public static void printHdr(List<Long> list) {
//        Histogram histogram = new Histogram(99999 * 1000L, 1);
//
//        try {
//            // 创建文件读取对象
//
//            // 读取文件内容并逐行输出
//            String line;
//            for (Long s : list) {
//                if (!s.equals("")) {
//                    Long l = s;
//                    System.out.println(l);
//                    histogram.recordValue(l);
//                }
//            }
//
//
//            String outputPath = "histogram_output.txt";
//
//            // 创建文件写入对象
//            FileOutputStream fileOutputStream = new FileOutputStream(outputPath);
//
//            PrintStream ps = new PrintStream(fileOutputStream);
//            // 输出直方图分布到文件中
//            histogram.outputPercentileDistribution(ps, 1d); // 输出到文件，每个百分位数之间间隔5个数字
//
//            System.out.println("Histogram output to file successfully: " + outputPath);
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//}
